﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MobilnyDostawca;
using MobilnyDostawca.Repositories;
using MobilnyDostawca.ViewModels;

namespace MobilnyDostawca.Controllers
{
    [Authorize]
    public class SubregionController : Controller
    {
        //
        // GET: /Subregion/
        public ViewResult Index()
        {
            return View(Repository.GetAllRegions());
        }

        //
        // GET: /Subregion/Details/5
        public ViewResult Details(int id)
        {
            return View(Repository.GetSubregionByID(id));
        }
        
        //
        // GET: /Subregion/Edit/5
        public ActionResult Edit(int id)
        {
            return View(LoadDostawcaEditViewModel(Repository.GetPossibleDeliverersForSubregion(id), id));
        }

        //
        // POST: /Subregion/Edit/5
        [HttpPost]
        public ActionResult Edit(SubregionyEditViewModel subregionyEditViewModel)
        {
            if (ModelState.IsValid)
            {
                Repository.UpdateSubregionDeliverer(subregionyEditViewModel.Dostawca, subregionyEditViewModel.ID);
                return RedirectToAction("Index");
            }
            return View(LoadDostawcaEditViewModel(Repository.GetPossibleDeliverersForSubregion(subregionyEditViewModel.ID), subregionyEditViewModel.ID));
        }

        public SubregionyEditViewModel LoadDostawcaEditViewModel(IEnumerable<Dostawcy> dostawcy, int id)
        {
            SubregionyEditViewModel model = new SubregionyEditViewModel();
            Subregiony subregion = Repository.GetSubregionByID(id);
            model.ID = id;
            model.Region = subregion.Regiony.Nazwa;
            model.Subregion = subregion.Nazwa;
            model.PoprzedniDostawca = string.Format("{0} {1}", subregion.Dostawcy.Imie, subregion.Dostawcy.Nazwisko);

            foreach(var dostawca in dostawcy)
            {
                if (dostawca.ID != subregion.Dostawcy.ID) 
                {
                    model.Dostawcy.Add(new SelectListItem() { Text = string.Format("{0} {1}", dostawca.Imie, dostawca.Nazwisko), Value = dostawca.ID.ToString() });
                }
            }
            
            return model;
        }
    }
}